<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>数组的剩余方法</title>
    <script type="text/javascript">
      var arr = ['孙悟空', '猪八戒', '沙和尚'];
      var arr2 = ['白骨精', '玉兔精', '蜘蛛精'];
      var arr3 = ['二郎神', '太上老君', '玉皇大帝'];

      /*
       * concat()可以连接两个或多个数组，并将新的数组返回
       * 	- 该方法不会对原数组产生影响
       */
      var result = arr.concat(arr2, arr3, '牛魔王', '铁扇公主');

      /*
       * join()
       * 	- 该方法可以将数组转换为一个字符串
       * 	- 该方法不会对原数组产生影响，而是将转换后的字符串作为结果返回
       * 	- 在join()中可以指定一个字符串作为参数，这个字符串将会成为数组中元素的连接符
       * 		如果不指定连接符，则默认使用,作为连接符
       */
      arr = ['孙悟空', '猪八戒', '沙和尚', '唐僧'];

      result = arr.join('@-@');
      /*
       * reverse()
       * 	- 该方法用来反转数组（前边的去后边，后边的去前边）
       * 	- 该方法会直接修改原数组
       */

      arr.reverse();

      //console.log(arr);

      arr = ['b', 'd', 'e', 'a', 'c'];

      /*
       * sort()
       * 	- 可以用来对数组中的元素进行排序
       * 	- 也会影响原数组，默认会按照Unicode编码进行排序
       */
      arr.sort();
      //arr.reverse();

      /*
       * 即使对于纯数字的数组，使用sort()排序时，也会按照Unicode编码来排序，
       * 	所以对数字进排序时，可能会得到错误的结果。
       *
       * 我们可以自己来指定排序的规则
       * 	我们可以在sort()添加一个回调函数，来指定排序规则，
       * 		回调函数中需要定义两个形参,
       * 		浏览器将会分别使用数组中的元素作为实参去调用回调函数
       * 		使用哪个元素调用不确定，但是肯定的是在数组中a一定在b前边
       * 	- 浏览器会根据回调函数的返回值来决定元素的顺序，
       * 		如果返回一个大于0的值，则元素会交换位置
       * 		如果返回一个小于0的值，则元素位置不变
       * 		如果返回一个0，则认为两个元素相等，也不交换位置
       *
       * 	- 如果需要升序排列，则返回 a-b
       * 		如果需要降序排列，则返回b-a
       */
      arr = [5, 4, 2, 1, 3, 6, 8, 7];

      arr.sort(function (a, b) {
        //前边的大
        /*if(a > b){
					return -1;
				}else if(a < b){
					return 1;
				}else{
					return 0;
				}*/

        //升序排列
        //return a - b;

        //降序排列
        return b - a;
      });

      console.log(arr);
    </script>
  </head>
  <body></body>
</html>
